home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 June: Reference Library / Dev.CD Jun 00 RL Disk 1.toast / pc / technical documentation / develop / develop issue 27 / develop issue 27 code / 3d game controls / source / lights.c < prev    next >
Encoding:
Text File  |  1996-06-29  |  3.5 KB  |  125 lines

  1. //--------------------------------------------------------------------------------------------
  2. //  Lighting Code
  3. //
  4. //      by Philip McBride
  5. //
  6. //--------------------------------------------------------------------------------------------
  7.  
  8.  
  9. #include "GameControls.h"
  10. #include "extern.h"
  11. #include "lights.h"
  12.  
  13. //--------------------------------------------------------------------------------------------
  14. //  Create Lights
  15. //
  16. // make an ambient light as well as a number of point lights: from above both
  17. // forward and back (+/- z), in front (separate r, g, b) and in back (also
  18. // separate r, g, b)
  19. TQ3Status MyNewLights( DocumentPtr theDocument ) 
  20. {
  21.     TQ3GroupObject            lightGroup;
  22.     TQ3LightObject            light;
  23.     TQ3PointLightData        pointData;
  24.     TQ3LightData            ambientData;
  25.     
  26.     // make light group
  27.     lightGroup = Q3LightGroup_New();
  28.  
  29.     // add ambient light
  30.     ambientData.isOn        = kQ3True;
  31.     ambientData.brightness    = 0.70;
  32.     ambientData.color.r     = 0.4;
  33.     ambientData.color.g     = 0.4;
  34.     ambientData.color.b     = 0.4;
  35.     
  36.     light = Q3AmbientLight_New(&ambientData);
  37.     Q3Group_AddObject(lightGroup, light);
  38.     Q3Object_Dispose(light);
  39.  
  40.     // light from above (both + and - z)
  41.     pointData.lightData.isOn        = kQ3True;
  42.     pointData.lightData.brightness    = 0.950;
  43.     pointData.lightData.color.r     = 1.0;
  44.     pointData.lightData.color.g     = 1.0;
  45.     pointData.lightData.color.b     = 1.0;
  46.     pointData.location.x            = 0.0;
  47.     pointData.location.y            = 1000.0;
  48.     pointData.location.z            = 1000.0;
  49.     pointData.castsShadows            = kQ3False;
  50.     pointData.attenuation            = kQ3AttenuationTypeNone;
  51.     
  52.     light = Q3PointLight_New(&pointData);
  53.     Q3Group_AddObject(lightGroup, light);
  54.     Q3Object_Dispose(light);
  55.  
  56.     pointData.location.z            = -1000.0;
  57.     
  58.     light = Q3PointLight_New(&pointData);
  59.     Q3Group_AddObject(lightGroup, light);
  60.     Q3Object_Dispose(light);
  61.  
  62.     // light from front (r, g, b separate)
  63.     pointData.lightData.brightness    = 0.80;
  64.     pointData.lightData.color.r     = 1.0;
  65.     pointData.lightData.color.g     = 0.0;
  66.     pointData.lightData.color.b     = 0.0;
  67.     pointData.location.x            = -1000.0;
  68.     pointData.location.y            = 0.0;
  69.     pointData.location.z            = 1000.0;
  70.     
  71.     light = Q3PointLight_New(&pointData);
  72.     Q3Group_AddObject(lightGroup, light);
  73.     Q3Object_Dispose(light);
  74.  
  75.     pointData.lightData.color.r     = 0.0;
  76.     pointData.lightData.color.g     = 1.0;
  77.     pointData.lightData.color.b     = 0.0;
  78.     pointData.location.x            = 1000.0;
  79.     
  80.     light = Q3PointLight_New(&pointData);
  81.     Q3Group_AddObject(lightGroup, light);
  82.     Q3Object_Dispose(light);
  83.  
  84.     pointData.lightData.color.r     = 0.0;
  85.     pointData.lightData.color.g     = 0.0;
  86.     pointData.lightData.color.b     = 1.0;
  87.     
  88.     light = Q3PointLight_New(&pointData);
  89.     Q3Group_AddObject(lightGroup, light);
  90.     Q3Object_Dispose(light);
  91.  
  92.     // light from rear (r, g, b separate as above)
  93.     pointData.lightData.color.r     = 1.0;
  94.     pointData.lightData.color.g     = 0.0;
  95.     pointData.lightData.color.b     = 0.0;
  96.     pointData.location.x            = -1000.0;
  97.     pointData.location.z            = -1000.0;
  98.     
  99.     light = Q3PointLight_New(&pointData);
  100.     Q3Group_AddObject(lightGroup, light);
  101.     Q3Object_Dispose(light);
  102.  
  103.     pointData.lightData.color.r     = 0.0;
  104.     pointData.lightData.color.g     = 1.0;
  105.     pointData.lightData.color.b     = 0.0;
  106.     pointData.location.x            = 1000.0;
  107.     
  108.     light = Q3PointLight_New(&pointData);
  109.     Q3Group_AddObject(lightGroup, light);
  110.     Q3Object_Dispose(light);
  111.  
  112.     pointData.lightData.color.r     = 0.0;
  113.     pointData.lightData.color.g     = 0.0;
  114.     pointData.lightData.color.b     = 1.0;
  115.     
  116.     light = Q3PointLight_New(&pointData);
  117.     Q3Group_AddObject(lightGroup, light);
  118.     Q3Object_Dispose(light);
  119.  
  120.     // add light group to view and then dispose
  121.     Q3View_SetLightGroup(theDocument->theView, lightGroup);
  122.     Q3Object_Dispose(lightGroup);
  123.     
  124.     return(kQ3Success);
  125. }